home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD015b.dsk / LOGIC PROBLEM SOLVER.bas < prev    next >
BASIC Source File  |  2003-06-12  |  9KB  |  295 lines

  1. 1  REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>LOGIC PROBLEM SOLVER <CTRL-M>CREATIVE COMPUTING <CTRL-M>DECEMBER, 1980 <CTRL-M>PAGE 118 
  2. 2  HOME 
  3. 5  PRINT "INSTRUCTIONS - TYPE IN YOUR EQUATIONS   IN DATA LINES 6000-6999.  WHEN THE      COMPUTER ASKS FOR 'MEMBERS IN ORDER'    (LINE 40) YOU MUST TYPE IN THE MEMBERS  GROUP BY GROUP.  ALSO, IF THE MEMBERS OF"
  4. 6  PRINT "A GROUP HAVE AN ASCENDING ORDER, YOU    MUST TYPE THEM IN IN THAT ASCENDING     ORDER."
  5. 8  DIM V(11),V1(11),G(12),D$(30),R(6),R1(6),D(50,50)
  6. 9 S = 15626:I9 = 1
  7. 10  READ W,W,W,W,W
  8. 19  INPUT "HOW MANY EQUATIONS? ";P2: PRINT 
  9. 20  INPUT "NUMBER OF GROUPS? ";N: PRINT 
  10. 30  INPUT "NUMBER OF MEMBERS IN EACH GROUP?  ";A: PRINT 
  11. 31 H = A
  12. 32  PRINT ".";
  13. 40  PRINT "INPUT MEMBERS IN ORDER"
  14. 50  FOR X = 1 TO N *A: INPUT D$(X): NEXT X
  15. 100  FOR X = 1 TO N *A
  16. 110 D(X,X) = 3: IF X < = H  THEN  GOSUB 4500
  17. 120  NEXT X
  18. 155  FOR R2 = A -1 TO 2  STEP  -1
  19. 1005  READ C$,D$,F$
  20. 1010 K = 0:Z = 0:Z1 = 0
  21. 1011  PRINT ".";
  22. 1019 P2 = P2 -1
  23. 1020  FOR X = 1 TO N *A
  24. 1022  IF C$ = D$(X)  THEN Z = X
  25. 1024  IF F$ = D$(X)  THEN Z1 = X
  26. 1026  NEXT X
  27. 1027  IF Z1 < >0  THEN  IF Z < >0  THEN 1030
  28. 1028  PRINT "THERE IS A TYPING ERROR ... SOMEWHERE!!": END 
  29. 1030  IF D$ = "="  THEN K = 1:F = 3: GOTO 1100
  30. 1035  IF D$ = "<>"  THEN F = 2: GOTO 1100
  31. 1038  IF D$ = "<"  THEN L$ = F$:F$ = C$:C$ = L$:W = Z:Z = Z1:Z1 = W:W4 = 1: GOTO 4700
  32. 1049  IF D$ = ">"  THEN W4 = 1: GOTO 4700
  33. 1060  GOTO 1300
  34. 1070  GOTO 1200
  35. 1071  IF I9/3 =  INT(I9/3)  THEN  GOSUB 1500
  36. 1072 I9 = I9 +1: IF X7 >N +A - INT(A/2)  THEN  GOSUB 1400
  37. 1073  GOTO 3000
  38. 1076  IF W4 = 1  THEN 4800
  39. 1077  GOTO 1060
  40. 1100 D(Z,Z1) = F: IF F = 3  THEN  IF Z < = H  THEN  GOSUB 4500
  41. 1110 D(Z1,Z) = F: IF F = 3  THEN  IF Z1 < = H  THEN  GOSUB 4500
  42. 1111  PRINT ".";
  43. 1114  IF K = 0  THEN  IF P2 = 0  THEN 1060
  44. 1115  IF K = 0  THEN 1005
  45. 1120 L1 = Z1:L = Z
  46. 1125 J8 = 1
  47. 1127  IF  INT(Z/H) < >Z/H  THEN Z = Z +H
  48. 1128 W =  INT(Z/H)
  49. 1129  GOTO 1135
  50. 1130 L1 = L:L = Z1
  51. 1131  IF  INT(Z1/H) < >Z1/H  THEN Z1 = Z1 +H
  52. 1132 W =  INT(Z1/H)
  53. 1135 X = (N *A -((N -W) *A)) -H
  54. 1136 X = X +1
  55. 1137  IF X >N *(A)  THEN 1175
  56. 1138  IF X >N *A -((N -W) *A)  THEN 1175
  57. 1139  IF X = L  THEN 1170
  58. 1140 D(L1,X) = 2
  59. 1170  GOTO 1136
  60. 1175  IF J8 = 1  THEN J8 = 0: GOTO 1130
  61. 1177  IF S4 = P2  THEN 1060
  62. 1178  GOTO 1005
  63. 1200  FOR X = 1 TO N *A
  64. 1206  RESTORE 
  65. 1210  READ W
  66. 1211  IF W = 0  THEN 1290
  67. 1212 Y = (W -1) *A
  68. 1215 X1 = 0
  69. 1220 Y = Y +1
  70. 1230  IF Y >N *A -((N -W) *A)  THEN 1270
  71. 1240  IF D(X,Y) = 2  THEN X1 = X1 +1
  72. 1245  IF D(X,Y) >2  THEN 1210
  73. 1260  GOTO 1220
  74. 1270  IF X1 = A -1  THEN Q = ((W *A) -A) +1:Q1 = W *A: GOSUB 1750
  75. 1280  GOTO 1210
  76. 1290  NEXT X: GOTO 1071
  77. 1300  FOR X = 1 TO N *A
  78. 1310  FOR Y = 1 TO N *A
  79. 1311  PRINT ".";
  80. 1328  IF X = Y  THEN 1335
  81. 1329  IF D(X,Y) = 2  THEN D(Y,X) = 2
  82. 1330  IF D(X,Y) = 3  THEN  GOSUB 1350
  83. 1335  NEXT Y: NEXT X: GOTO 1070
  84. 1350  FOR I = 1 TO N *A
  85. 1360  IF D(X,I) = 2  THEN D(Y,I) = 2
  86. 1365  IF D(Y,I) = 3  THEN 1380
  87. 1370  IF D(X,I) = 3  THEN D(Y,I) = 3: IF Y < = H  THEN  GOSUB 4500
  88. 1380  IF D(Y,I) = 2  THEN D(X,I) = 2
  89. 1385  IF D(X,I) = 3  THEN 1395
  90. 1390  IF D(Y,I) = 3  THEN D(X,I) = 3: IF X < = H  THEN  GOSUB 4500
  91. 1395  NEXT I: RETURN 
  92. 1400  FOR X = 1 TO A
  93. 1405 R1 = 0:R2 = 0:R3 = 0
  94. 1410 W6 = 0
  95. 1411  PRINT ".";
  96. 1420  FOR Y = 1 TO N *A
  97. 1430  IF D(X,Y) = 3  THEN W6 = W6 +1: GOTO 1470
  98. 1435  NEXT Y
  99. 1440  IF W6 = N  THEN 1479
  100. 1445  NEXT X
  101. 1450  RETURN 
  102. 1470  IF Y <2 *H +1  THEN R1 = Y: GOTO 1435
  103. 1472  IF W6 <2  THEN 1445
  104. 1474  IF Y <3 *H +1  THEN R2 = Y: GOTO 1435
  105. 1476  IF W6 <3  THEN 1445
  106. 1478 R3 = Y: GOTO 1435
  107. 1479  IF R3 = 0  THEN R3 = R2
  108. 1480 D(X,X) = 4:D(X,R1) = 4:D(X,R2) = 4
  109. 1482 D(X,R3) = 4:D(R1,X) = 4:D(R1,R1) = 4
  110. 1485 D(R1,R2) = 4:D(R1,R3) = 4:D(R2,X) = 4
  111. 1488 D(R2,R1) = 4:D(R2,R2) = 4:D(R2,R3) = 4
  112. 1490 D(R3,X) = 4:D(R3,R1) = 4:D(R3,R2) = 4
  113. 1495 D(R3,R3) = 4
  114. 1496  GOTO 1445
  115. 1500  FOR R2 = A -1 TO 2  STEP  -1
  116. 1502  RESTORE 
  117. 1504  READ W
  118. 1506  IF W = 0  THEN 1564
  119. 1507  IF W >(A)  THEN 1564
  120. 1508  FOR J8 = (W -1) *A +1 TO N *A -((N -W) *A)
  121. 1509 R1(1) = 0:R1(2) = 0:R1(3) = 0:R1(4) = 0:R1(5) = 0:R1(6) = 0
  122. 1510 X = (W -1) *A +1
  123. 1511 R(1) = 0:R(2) = 0:R(3) = 0:R(4) = 0:R(5) = 0:R(6) = 0
  124. 1516 C = 0:L = 0:K = 1
  125. 1518  FOR R1 = J8 TO X +A -1
  126. 1519  IF K >N  THEN 1563
  127. 1520 B = 0:Y = (K -1) *A:R3 = 0
  128. 1524  IF Y +1 = X  THEN 1556
  129. 1526 Y = Y +1:R3 = R3 +1
  130. 1528  IF R1 >J8  THEN  IF Y >(K -1) *A +(A)  THEN  IF A -B = R2  THEN 1554
  131. 1530  IF R1 >J8  THEN  IF Y >(K -1) *A +(A)  THEN 1556
  132. 1531  IF Y >(K -1) *A +(A)  THEN  IF A -B < >R2  THEN 1556
  133. 1532  IF Y >(K -1) *A +(A)  THEN 1554
  134. 1534  IF R1 >J8  THEN 1548
  135. 1536 R(R3) = D(R1,Y): IF R(R3) >0  THEN L = 1
  136. 1538 I = 1
  137. 1540  IF R(R3) = 2  THEN B = B +1
  138. 1541  IF A -B = R2  THEN 1554
  139. 1542  GOTO 1526
  140. 1544  IF A -B = R2  THEN 1554
  141. 1546  GOTO 1556
  142. 1548 L1 = (K -1) *A
  143. 1549  GOTO 3700
  144. 1552  GOTO 1526
  145. 1554 C = C +1:R1(1) = J8:R1(C) = R1
  146. 1556  IF A -B < >R2  THEN  IF R1 = J8  THEN R1 = J8 +A
  147. 1557  NEXT R1:K = K +1
  148. 1558 I = 0
  149. 1560  IF C = R2  THEN  IF L = 1  THEN 1570
  150. 1561 C = 0:L = 0: GOTO 1518
  151. 1563  NEXT J8: GOTO 1504
  152. 1564  NEXT R2: GOTO 1072
  153. 1566  NEXT X
  154. 1568  GOTO 1072
  155. 1570 Y = (K -2) *A +1
  156. 1572  FOR Z = X TO X +A -1
  157. 1574  IF R1(1) < >Z  THEN  IF R1(2) < >Z  THEN  IF R1(3) < >Z  THEN  IF R1(4) <Z  THEN 1578
  158. 1576  NEXT Z: GOTO 1564
  159. 1578  IF R1(5) < >Z  THEN  IF R1(6) < >Z  THEN 1582
  160. 1580  GOTO 1576
  161. 1582  FOR X1 = 1 TO A
  162. 1590  IF R(X1) = 0  THEN D(Z,(Y +X1 -1)) = 2
  163. 1592  NEXT X1: GOTO 1580
  164. 1611  PRINT ".";
  165. 1711  PRINT ".";
  166. 1750  FOR W = Q TO Q1
  167. 1760  IF D(X,W) = 2  THEN 1780
  168. 1770 D(X,W) = 3: IF X < = H  THEN  GOSUB 4500
  169. 1780  NEXT W
  170. 1790  RETURN 
  171. 1811  PRINT ".";
  172. 1911  PRINT ".";
  173. 2000  FOR X = 1 TO A
  174. 2010  PRINT ""
  175. 2011  PRINT ".";
  176. 2020  FOR Y = 1 TO N *A
  177. 2050  IF D(X,Y) >2  THEN 2090
  178. 2060  NEXT Y: NEXT X: FOR X = 1 TO 10: PRINT "<CTRL-G>": NEXT X: END 
  179. 2090  REM 
  180. 2100  PRINT D$(Y);"-";
  181. 2101  GOTO 2060
  182. 2111  PRINT ".";
  183. 2116 D(X,L1) = 2
  184. 2211  PRINT ".";
  185. 2311  PRINT ".";
  186. 2411  PRINT ".";
  187. 2511  PRINT ".";
  188. 2611  PRINT ".";
  189. 2711  PRINT ".";
  190. 2811  PRINT ".";
  191. 2911  PRINT ".";
  192. 3000  FOR X = 1 TO N *A
  193. 3010 X1 = 0
  194. 3011  PRINT ".";
  195. 3020  FOR Y = 1 TO N *A
  196. 3060  IF D(X,Y) = 3  THEN 3100
  197. 3070  NEXT Y: NEXT X: GOTO 1076
  198. 3100 J8 = X
  199. 3101  IF  INT(X/H) < >(X/H)  THEN J8 = J8 +H
  200. 3104  ON  INT(J8/H) GOTO 3200,3300,3400,3500,3500
  201. 3110  FOR I = L TO L1
  202. 3111  PRINT ".";
  203. 3120  IF I = X  THEN 3140
  204. 3130 D(I,Y) = 2
  205. 3140  NEXT I
  206. 3145  GOTO 3070
  207. 3150  RETURN 
  208. 3200 L = 1:L1 = A: GOTO 3110
  209. 3211  PRINT ".";
  210. 3300 L = A +1:L1 = 2 *A: GOTO 3110
  211. 3311  PRINT ".";
  212. 3400 L = 2 *A +1:L1 = 3 *A: GOTO 3110
  213. 3411  PRINT ".";
  214. 3500 L = 3 *A +1:L1 = N *A: GOTO 3110
  215. 3600  FOR Q = R3 +1 TO A
  216. 3610 R(Q) = 0: NEXT Q: RETURN 
  217. 3700  FOR Q = 1 TO A
  218. 3710 L1 = L1 +1
  219. 3711  PRINT ".";
  220. 3720  IF R(Q) = 2  THEN  IF D(R1,L1) < >2  THEN 1556
  221. 3740  NEXT Q
  222. 3741  GOTO 1554
  223. 4500 X7 = X7 +1
  224. 4510  IF X7 = N *(A)  THEN 2000
  225. 4511  PRINT ".";
  226. 4520  RETURN 
  227. 4700 U = U +1
  228. 4710  READ V(U),V1(U)
  229. 4711  PRINT ".";
  230. 4720 G(U) = Z
  231. 4730 U = U +1
  232. 4740 G(U) = Z1
  233. 4750  IF S4 = P2  THEN 1060
  234. 4760  GOTO 1005
  235. 4800  FOR X = 1 TO U  STEP 2
  236. 4811  PRINT ".";
  237. 4830  FOR Y = (V(X) -1) *H +1 TO V(X) *H
  238. 4851 D(G(X),((V(X) -1) *H) +1) = 2
  239. 4852 D(G(X +1),V(X) *H) = 2
  240. 4853 D(G(X),G(X +1)) = 2
  241. 4854 D(G(X +1),G(X)) = 2
  242. 4855  IF V1(X) < = 1  THEN 4860
  243. 4856  FOR R1 = 1 TO V1(X)
  244. 4857 D(G(X),((V(X) -1) *H +R1)) = 2
  245. 4858 D(G(X +1),(V(X) *H) -R1) = 2
  246. 4859  NEXT R1
  247. 4860  IF D(G(X),Y) >2  THEN  IF V1(X) >0  THEN  GOSUB 7000
  248. 4870  IF D(G(X +1),Y) >2  THEN  IF V1(X) >0  THEN  GOSUB 7010
  249. 4880  IF D(G(X),Y) >2  THEN  IF V1(X) = 0  THEN  GOSUB 7020
  250. 4890  IF D(G(X +1),Y) >2  THEN  IF V1(X) = 0  THEN  GOSUB 7080
  251. 4891  IF D(G(X +1),Y) = 2  THEN 8500
  252. 4892  IF D(G(X),Y) = 2  THEN 8600
  253. 4895  GOTO 8000
  254. 5998  DATA  1,2,3,4,0
  255. 6000  DATA  ENGINEER,<>,BROWN
  256. 6005  DATA  SMITH,<>,GUARD
  257. 6010  DATA  SMITH,<>,BLACK
  258. 6015  DATA  SMITH,<>,GREEN
  259. 6020  DATA  GUARD,<>,BLACK
  260. 6025  DATA  GUARD,<>,GREEN
  261. 6030  DATA  JONES,<>,PORTER
  262. 6035  DATA  JONES,<>,GREEN
  263. 6040  DATA  PORTER,<>,GREEN
  264. 6045  DATA  JONES,<>,STOKER
  265. 6050  DATA  STOKER,=,RED
  266. 7000  IF D(G(X +1),(Y -V1(X))) >2  THEN  RETURN 
  267. 7005 D(G(X +1),(Y -V1(X))) = 3: IF G(X +1) < = H  THEN  GOSUB 4500
  268. 7006  RETURN 
  269. 7010  IF D(G(X),(Y +V1(X))) >2  THEN  RETURN 
  270. 7011  PRINT ".";
  271. 7015 D(G(X),(Y +V1(X))) = 3: IF G(X) < = H  THEN  GOSUB 4500: RETURN 
  272. 7016  RETURN 
  273. 7020  FOR J8 = Y TO V(X) *H
  274. 7050 D(G(X +1),J8) = 2
  275. 7060  NEXT J8: RETURN 
  276. 7080  FOR J8 = (V(X) -1) *H +1 TO Y
  277. 7110 D(G(X),J8) = 2
  278. 7120  NEXT J8: RETURN 
  279. 8000  IF D(G(X),Y) = 2  THEN  IF V1(X) >0  THEN  IF Y >(V(X) *H) +1  THEN 9000
  280. 8010  IF D(G(X +1),Y) = 2  THEN  IF V1(X) >0  THEN  IF Y <(V(X) *H) +1  THEN 9010
  281. 8011  PRINT ".";
  282. 8040  NEXT Y: NEXT X: GOTO 1077
  283. 8500 W = (V(X) -1) *H
  284. 8510 W = W +1
  285. 8520  IF W >Y  THEN D(G(X),Y) = 2:D(G(X),Y +1) = 2: GOTO 4892
  286. 8530  IF D(G(X +1),W) < >2  THEN 4892
  287. 8540  GOTO 8510
  288. 8600 W = Y
  289. 8610 W = W +1
  290. 8620  IF W >(V(X) *H)  THEN D(G(X +1),Y) = 2:D(G(X +1),Y -1) = 2
  291. 8625  IF W >(V(X) *H)  THEN 4895
  292. 8630  IF D(G(X),W) < >2  THEN 4895
  293. 8640  GOTO 8610
  294. 9000 D(G(X +1),Y -V1(X)) = 2: GOTO 8040
  295. 9010 D(G(X),Y +V1(X)) = 2: GOTO 8040